package com.boot2.core.dao.i;

import com.boot2.core.dao.jpa.AbsctractDao;
import com.boot2.core.model.SchedulerTask;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;

import java.util.List;

/**
 * @author zhangweilin
 * @ClassName: SchedulerTaskJpaDao
 * @Description: 【定时任务】 jpa dao
 * @date 2018-6-4 20:12:12
 */
public interface SchedulerTaskDao extends AbsctractDao<SchedulerTask,Long> {

//    /**
//     * 按关联的业务表主键id查找
//     *
//     * @param bussinessId
//     * @return
//     */
//    SchedulerTask findByBussinessId(String bussinessId);


    /**
     * 按code加载
     *
     * @param code
     * @return
     */
    List<SchedulerTask> findByCode(String code);


    /**
     * 按code和bussinessId加载
     *
     * @param code
     * @param bussinessId
     * @return
     */
    SchedulerTask findByCodeAndBussinessId(String code, String bussinessId);



    /**
     * 按code加载列表
     *
     * @param codeList
     * @return
     */
    List<SchedulerTask> findAllByCodeIn(List<String> codeList);


    /**
     * 只加载有效的定时任务，当下次遍历到已经不会再被执行到的任务时，isEnabled会自动置为false
     * @return
     */
    List<SchedulerTask> findByIsEnabledIsTrue();


    /**
     * 只加载有效的定时任务，当下次遍历到已经不会再被执行到的任务时，isEnabled会自动置为false,
     * 按appName加载
     * @return
     */
    List<SchedulerTask> findByIsEnabledIsTrueAndAppName(String appName);

    /**
     * 更新被触发次数
     * @param id
     * @return
     */
    @Query("update SchedulerTask set fireCount=fireCount+1 where id=?1")
    @Modifying
    int updateFireCount(Long id);
}